#include<stdio.h>
int ones(unsigned int n)
{
int m=n==0?0:1;
while(n=(n&(n-1))) // 将整数n的二进制表示中最右侧的一个1置0
m++;
return m;
}
int isBit1(int num, unsigned int indexBit) // 判断从右数起的indexBit位是不是1
{
return (num&(1u<<indexBit))!=0;
//num=num>>indexBit;
//return num&1; // &1避免1做为符号
}
int main()
{
int a=1;
int b=32;
printf("%d\n",a<<b); // a<<(b%32) 1
printf("%d\n",1<<32); // 0
int i=-1;
printf("%d\n",i>>2); // -1 = 0xFFFFFFFF,移位后要按符号位补位,还是0xFFFFFFFF
printf("%d\n",ones(-1));
printf("%d\n",isBit1(-1,3));
getchar();
return 0;
}
本页共32段,616个字符,750 Byte(字节)